如何为你的 Rackspace 用户设置储存配额?

简介:

本章将示範如何为你的备份用户在 Rackspace 的储存容器上设置 Rackspace 的储存限额。

如果你未曾接触过 Rackspace,你应该先参考他们在 http://support.rackspace.com/ 的常规设置文档。

如果你已经使用 Rackspace,你可以按照我们的步骤来为你的备份用户设置存储。我们将指导你完成以下的步骤:

在完成这些步骤後,就可以为容器设置配额了。



假设:

在设置下面的存储配额步骤前,我们假设你已经在备份客户端建立了 Rackspace 的存储。而容器的命名语法如下: "mybackup-<username>" 。



配置:

步骤 1: 登入到你的 Rackspace 的云控制面板。

收集从 "用户管理"(User Management) > "用户名称" (Username)(点击你需要获得API密钥的用户名称。)> "登录详细信息"(Login Details) > "API密钥" (API Key)

点击"显示"(Show) ,以显示已遮罩的密钥。





步骤 2: 获取访问令牌

连接到一台安装了curl 的 Linux 伺服器。你需要使用 curl 指令来向 Rackspace 的伺服器申请访问令牌。

使用方法: Usage: curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens -X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"<user name>\", \"apiKey\":\"<API Key>\"}}}" -H "Content-Type: application/json"

注: API 密钥可以从上一步骤中获取。


例如
----------------------------------------------------------------------------------------------------
[root@os ~]# curl -v -k -s https://identity.api.rackspacecloud.com/v2.0/tokens -
X "POST" -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"DavidCha
n\", \"apiKey\":\"778b2d84b63334e36a2d841339663446\"}}}" -H "Content-Type: appli
cation/json"
* About to connect() to identity.api.rackspacecloud.com port 443 (#0)
*   Trying 72.3.138.129... connected
* Connected to identity.api.rackspacecloud.com (72.3.138.129) port 443 (#0)
    :
    :
    :
  修剪
    :
    :
    :
{"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1
8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate
dBy":["APIKEY"]},"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":{"region"
:"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.c
om\/v1\/MossoCloudFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819","
publicURL":"https:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"
DFW","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com
\/v1\/MossoCloudFS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","pu
blicURL":"https:\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"OR
D","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/
v1\/MossoCloudFS_926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoi
nts":[{"region":"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/st
orage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/
snet-storage101.hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"},
    :
    :
    :
  修剪
    :
    :
    :
"user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr
iption":"Object Store Admin Role for Account User","name":"object-store:admin"},
{"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl
osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us
er access to keystone Service methods","name":"compute:default"},{"tenantId":"Mo
ssoCloudFS_926819","id":"5","description":"A Role that allows a user access to k
eystone Service methods","name":"object-store:default"},{"id":"2","description":
"Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:default
Region":"HKG"}}}[root@os ~]#
[root@os ~]#
----------------------------------------------------------------------------------------------------

需要先收集上述强调的值,然後才能提交其他 curl 指令来设置配额。由於返回的字串是长而零星的信息,你可以使用第三方的解析器如: JSON viewer 解读上面的字串。

注:
上面的例子是经过修剪以适合放於这个文章中。
如果你是使用 JSON viewer,你需要复制下面的字串

{"access":{"token  ......修剪...... defaultRegion":"HKG"}}}
, 并显示於 JSON viewer 内。





步骤 3: 收集所需的信息,然後再设置配额。

要设置配额,你需要从上一步返回的字串中提取以下3条信息。

以及收集来自 Rackspace 云控制面板的容器名称。


3.1 token id

token id 可以在令牌的对象中收集。
例如 e85127fa63824a9f85ba437d1051b5c0



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
{"access":{"token":{"id":"e85127fa63824a9f85ba437d1061b5c0","expires":"2014-11-1
8T07:26:16.071Z","tenant":{"id":"926819","name":"926819"},"RAX-AUTH:authenticate
dBy":["APIKEY"]}
    :
    :
    :
----------------------------------------------------------------------------------------------------

从 JSON Viewer 中:





3.2 RAX-AUTH:defaultRegion

默认地区可以用户对象中收集。
例如 HKG



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
"user":{"id":"0c3001f01cb94856a87f8653ab875117","roles":[{"id":"10000256","descr
iption":"Object Store Admin Role for Account User","name":"object-store:admin"},
{"tenant* Connection #0 to host identity.api.rackspacecloud.com left intact * Cl
osing connection #0 Id":"926819","id":"6","description":"A Role that allows a us
er access to keystone Service methods","name":"compute:default"},"tenantId":"Mos
soCloudFS_926819","id":"5","description":"A Role that allows a user access to ke
ystone Service methods","name":"object-store:default"},{"id":"2","description":"
Default Role.","name":"identity:default"}],"name":"DavidChan","RAX-AUTH:defaultR
egion":"HKG"}}
    :
    :
    :
----------------------------------------------------------------------------------------------------

从 JSON Viewer 中:





3.3 端点的公开网址

你需要从对象 serviceCatalog 中找出端点的公开网址,与子对象的名称 "cloudFiles",寻找端点内使用默认的地区(如HKG),那麽你就可以找到公开网址的路径。
例如 https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819



例如
----------------------------------------------------------------------------------------------------
    :
    :
    :
"serviceCatalog":[{"name":"cloudFilesCDN","endpoints":[{"region":"HKG","tenantId
":"MossoCloudFS_926819","publicURL":"https:\/\/cdn6.clouddrive.com\/v1\/MossoClo
udFS_926819"},{"region":"SYD","tenantId":"MossoCloudFS_926819","publicURL":"http
s:\/\/cdn4.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"DFW","tenantId":
"MossoCloudFS_926819","publicURL":"https:\/\/cdn1.clouddrive.com\/v1\/MossoCloud
FS_926819"},{"region":"IAD","tenantId":"MossoCloudFS_926819","publicURL":"https:
\/\/cdn5.clouddrive.com\/v1\/MossoCloudFS_926819"},{"region":"ORD","tenantId":"M
ossoCloudFS_926819","publicURL":"https:\/\/cdn2.clouddrive.com\/v1\/MossoCloudFS
_926819"}],"type":"rax:object-cdn"},{"name":"cloudFiles","endpoints":[{"region":
"HKG","tenantId":"MossoCloudFS_926819","publicURL":"https:\/\/storage101.hkg1.cl
ouddrive.com\/v1\/MossoCloudFS_926819","internalURL":"https:\/\/snet-storage101.
hkg1.clouddrive.com\/v1\/MossoCloudFS_926819"},    
    :
    :
    :
----------------------------------------------------------------------------------------------------

从 JSON Viewer 中:





3.4 容器名称

当备份集在备份客户端中建立後,容器名称可以在 Rackspace 云控制面板中的 "文件"(Files) 标签中找到。
例如: mybackup-davidchan





步骤 4: 设置在租户容器的配额。

在这个例子中,我们将设置容器为2MB配额(2097152位元)。

使用方法: curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: <quota>" -H "X-Auth-Token: <token id>" <endpoints public URL>/<container name>


注:
Rackspace 的容器网址是端点的公开网址和为你的用户建立的容器名称,就是

https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819mybackup-davidchan

你需要把斜线 "/" 放在2个值之间。

例如: https://storage101.hkg1.clouddrive.com/v1/MossoCloudFS_926819/mybackup-davidchan



例如
----------------------------------------------------------------------------------------------------
[root@os ~]# curl -v -k -X PUT -H "X-Container-Meta-Quota-Bytes: 2097152" -H "X-
Auth-Token: e85127fa63824a9f85ba437d1061b5c0" https://storage101.hkg1.clouddrive
.com/v1/MossoCloudFS_926819/mybackup-davidchan
* About to connect() to storage101.hkg1.clouddrive.com port 443 (#0)
*   Trying 119.9.64.232... connected
* Connected to storage101.hkg1.clouddrive.com (119.9.64.232) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* skipping SSL peer certificate verification
* SSL connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA
* Server certificate:
*       subject: CN=storage101.hkg1.clouddrive.com,OU=Domain Validated,OU=Thawte
 SSL123 certificate,OU=Go to https://www.thawte.com/repository/index.html
*       start date: Aug 15 00:00:00 2013 GMT
*       expire date: Aug 15 23:59:59 2015 GMT
*       common name: storage101.hkg1.clouddrive.com
*       issuer: CN=Thawte DV SSL CA,OU=Domain Validated SSL,O="Thawte, Inc.",C=U
S
> PUT /v1/MossoCloudFS_926819/mybackup-davidchan HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zl
ib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: storage101.hkg1.clouddrive.com
> Accept: */*
> X-Container-Meta-Quota-Bytes: 2097152
> X-Auth-Token: e85127fa63824a9f85ba437d1061b5c0
>
< HTTP/1.1 202 Accepted
< Content-Length: 76
< Content-Type: text/html; charset=UTF-8
< X-Trans-Id: tx682827faeba84b3bba3ee-005469b15ahkg1
< Date: Mon, 17 Nov 2014 08:27:06 GMT
<
* Connection #0 to host storage101.hkg1.clouddrive.com left intact
* Closing connection #0
<html><h1>Accepted</h1><p>The request is accepted for processing.</p></html>[roo
t@os ~]#
[root@os ~]#
----------------------------------------------------------------------------------------------------

当你看到"接受"(Accepted)讯息返回时,2MB的配额已成功设置。